package com.iot.ammeter.mapper.android.user;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.iot.ammeter.dto.app.user.AppUserInfoDTO;
import com.iot.ammeter.dto.app.user.AppUserListDTO;
import com.iot.ammeter.dto.app.user.AppUserLoginInfoDTO;
import com.iot.ammeter.entity.android.user.AppUser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.iot.ammeter.query.android.AppUserQuery;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * <p>
 * app端用户表 Mapper 接口
 * </p>
 *
 * @author yjx
 * @since 2021-10-18
 */
@Mapper
public interface AppUserMapper extends BaseMapper<AppUser> {

    /**
     * 校验邮箱存在与否，存在返回一个AppUser
     * 若appUser不为空则为true
     *
     * @param email 邮箱号
     * @return AppUser
     */
    AppUser emailExists(@Param("email") String email);

    /**
     * 注册app用户
     *
     * @param appUserId 用户id
     * @param email     邮箱号
     * @param password  密码
     * @return int
     */
    int saveAppUser(@Param("appUserId") String appUserId,
                    @Param("email") String email,
                    @Param("password") String password);

    /**
     * 查询登录密码 返回一个app用户对象
     *
     * @param email 邮箱号
     * @return AppUserLoginAndRegisterDTO
     */
    AppUser selectAppUserByEmail(@Param("email") String email);

    /**
     * app用户登录时获取用户信息
     *
     * @param email 邮箱号
     * @return AppUserLoginInfoDTO
     */
    AppUserLoginInfoDTO selectAppUserInfoByEmail(@Param("email") String email);

    /**
     * app用户查询账户信息
     *
     * @param email app用户邮箱
     * @return
     */
    AppUserInfoDTO selectAppInfo(@Param("email") String email);

    /**
     * 获取android用户列表
     *
     * @param pages        翻页对象U
     * @param appUserQuery 查询条件
     * @return android端用户集合
     */
    IPage<AppUserListDTO> selectAppUserPage(@Param("pages") Page<AppUserListDTO> pages, @Param("appUserQuery") AppUserQuery appUserQuery);
}
